﻿package com.zouloux.ui 
{
	import com.zouloux.abstract.IComponent;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.text.TextField;
	import flash.text.TextFieldAutoSize;
	
	/**
	 * ...
	 * @author ZoulouX
	 */
	// Ce n'est rien de plus qu'un bouton classique avec un texte
	// Les redimentionnements sont automatiques
	public class ClassicButton extends GenericButton implements IComponent
	{
		// Le champs texte
		public var $title					:TextField;
		
		// Le fond
		public var $back					:Sprite;
		
		// Le rollOver
		public var $rollover				:Sprite;
		
		// L'écart du texte en largeur et en hauteur
		protected var _widthTitleGap		:int;
		protected var _heightTitleGap		:int;
		
		// Les getters
		public function get title ():String
		{
			return $title.text;
		}
		public override function get width ():Number
		{
			return $back.width;
		}
		public override function get height ():Number
		{
			return $back.height;
		}
		
		// Les setters
		public function set title (value:String):void
		{
			if ($title != null)
			{
				$title.htmlText = value;
				$title.y = $back.height / 2 - $title.height / 2;
			}
		}
		public override function set width (value:Number):void
		{
			if ($back != null)
				$back.width = value;
			if ($title != null)
				$title.width = value - _widthTitleGap;
			if ($rollover != null)
				$rollover.width = value;
		}
		public override function set height (value:Number):void
		{
			if ($back != null)
				$back.height = value;
			if ($title != null)
				$title.y = value / 2 - $title.height / 2;
			if ($rollover != null)
				$rollover.height = value;
		}
		
		// Le constructeur
		public function ClassicButton ()
		{
			// Relayer la construction
			super();
		}
		
		// La méthode d'initialisation
		override protected function init (event:Event = null):void
		{
			// Intialiser le parent
			super.init();
			
			// Mémoriser les écarts
			if ($back != null && $title != null)
			{
				_widthTitleGap = $back.width - $title.width;
				_heightTitleGap = $back.height - $title.height;
			}
			
			// Définir la taille du texte
			if ($title != null)
			{
				$title.autoSize = TextFieldAutoSize.CENTER;
				$title.mouseEnabled = false;
				$title.multiline = true;
				$title.wordWrap = true;
			}
		}
		
		// La méthode pour redimentionner
		override public function resize (pWidth:Number, pHeight:Number):void
		{
			width = pWidth;
			height = pHeight;
		}
	}
}